package util

import "time"

// TimeStdFormat 标准格式化到秒
func TimeStdFormat(t time.Time) string {
	if t.IsZero() {
		return ""
	}
	return t.Format("2006-01-02 15:04:05")
}

// TimeToTimestamp to timestamp 毫秒
func TimeToTimestamp(t time.Time) int64 {
	if t.IsZero() {
		return 0
	}
	return t.UnixNano() / 1000000
}

// TimeToDate 返回日期
func TimeToDate(t time.Time) string {
	if t.IsZero() {
		return ""
	}
	return t.Format("2006-01-02")
}

// DateParse string to day
func DateParse(d string) (time.Time, error) {
	if d == "" {
		return time.Time{}, nil
	}
	return time.Parse("2006-01-02", d)
}

func getCSTTimeZone() *time.Location {
	return time.FixedZone("CST", 8*3600)
}

// GetNow 获取当前时间
func GetNow() time.Time {
	return time.Now().In(getCSTTimeZone())
}

// GetZeroTime 获取0时间
func GetZeroTime() time.Time {
	return time.Time{}
}

// GetCurrentTimestamp 获取当前时间戳
func GetCurrentTimestamp() int64 {
	return TimeToTimestamp(GetNow())
}

// TimestampToTime 时间戳转时间格式
func TimestampToTime(st int64) time.Time {
	// 以 1980-01-01 00:33:20 为基准判断  315506000
	// 秒
	if st < 315506000000 {
		return time.Unix(st, 0).In(getCSTTimeZone())
	} else if st > 315506000000 && st < 315506000000000 {
		st = st * 1000000
	}
	return time.Unix(0, st).In(getCSTTimeZone())
}
